package vip.xianz.jobmanager.mapper;

import org.apache.ibatis.annotations.Param;
import vip.xianz.jobmanager.data.entity.XUser;

import java.time.Instant;

public interface XUserMapper {
    /**
     * 根据主键删除一个用户
     * @param userId
     * @return
     */
    int deleteByPrimaryKey(String userId);

    /**
     * 插入一个完整信息的用户
     * @param record
     * @return
     */
    int insert(XUser record);

    /**
     * 插入一个不完整的信息，只设置包含值的 字段
     * @param record
     * @return
     */
    int insertSelective(XUser record);

    /**
     * 通过主键获取一个用户
     * @param userId
     * @return
     */
    XUser selectByPrimaryKey(String userId);

    /**
     * 更新一个用户，只更新包含值的字段
     * @param record
     * @return
     */
    int updateByPrimaryKeySelective(XUser record);

    /**
     * 更新一个用户，更新全部字段，没有则为NULL
     * @param record
     * @return
     */
    int updateByPrimaryKey(XUser record);

    /**
     * 获取基本用户信息：用户名、昵称、真实姓名、年龄、邮箱、性别
     * @param userId
     * @return
     */
    XUser selectBaseInfoByPrimaryKey(@Param("userId") String userId);

    /**
     * 更新用户的登录时间与ip地址
     * @param userId
     * @param now
     * @param ip
     * @return
     */
    int updateLastLoginTimeAndIpById(@Param("userId") String userId, @Param("now") Instant now, @Param("ip") String ip);
}